今天的题目貌似暴力分好拿写欸,然而……窝只有 $70$ ?不过排名比昨天上升了什么鬼。
$QwQ$ 题目的确很难懂,所以窝听了讲解后也没听懂多少,不过还是改出了第一题(第一题是人就改的出好吧o(≧口≦)o)。
题目压缩包戳我!!!~\(≧▽≦)/~
(有时链接可能会崩,如果崩了的话请稍后尝试QwQ)
T1
期望得分:30分
实际得分:30分
正解:找规律??
窝的解法:暴力模拟题意
题解:
第一眼看到题目,欸,如果按照题面模拟就有 $30$ 分!出题人良心啊。然后看数据范围,$100\%$ 的数据的 $n\leq 3\times10^7$ ,这应该是 $O(n)$ 算法才行啊,于是想,或许是线性 $DP$ ,然后推式子,推出这么一个鬼玩意:
$sum(a[i])$ 就是在 $1$ 到 $i-1$ 中大于 $a[i]$ 的数的个数,然后 $f[i]$ 表示将前 $i$ 个元素进行冒泡需要的交换次数。
很显然这是错的。
然后我就想到了 $NOI$ 往年的冒泡排序(貌似是 $NOI$ 的?),其实两道题没什么联系。
哎好吧发现过不去直接上暴力吧,题目说什么就做什么,于是把我用来对拍的暴力程序提交了上去,$30$ 分。
接下来讲讲正解。
很显然,对于一个元素 $a_i$ ,它所在的位置为 $i$ ,然而最后排好序后 $ta$ 应该回到的位置为 $a_i$ 。观察冒泡过程,发现对于一个元素,每次冒泡排序都最多会将 $ta$ 向自己的目标位置移动一格。
然后就是,比如说当前序列的最小元素,假设最小元素的起点位置为 $s$ ,我们发现每次冒泡总会将 $ta$ 向前移一格,然后在第 $s-1$ 次冒泡排序的时候 $1$ 归位了。然后发现 $1$ 的移动对 $2$ 的移动次数并没有产生影响,这个时候将 $1$ 删去,发现 $2$ 归位的移动次数变成了 $2$ 的初始位置 $-$ $1$ ,放在原序列中就是 $2$ 的初始位置 $-$ $2$ 。
这至少说明,对于任意一个元素 $i$ ,其所需要的移动次数为 $i-a_i$ 。
那么,如果要使序列有序,所需要的排序次数就是 $max\{ i-a_i \}$ 。直接计算答案即可。
(实际上窝也不是很明白…..貌似是这样的吧 $QwQ$ )
Code:
1 |
|
T2
期望得分:30分
实际得分:0分
正解:容斥+搜索+剪枝
窝的解法:暴搜
题解:
不会………….然后暴搜打挂了没得分。
所以这不能说是题解,留个坑吧。
T3
期望得分:40分
实际得分:40分
正解:将所有颜色维护成链,然后分块加速
窝的解法:直接维护成链
对于一个 $i$ ,如果 $a_i=k$ ,并且 $a_j=k$ ,而且 $i$ 和 $j$ 是离得最近的,则将它们向前向星那样连起来,最后对询问的区间直接暴力跳即可。
Code:
1 |
|
正解不费………………………………….
本文标题:【考试总结】 Test-2019.3.28 HNOI2019模拟
文章作者:Qiuly
发布时间:2019年03月28日 - 00:00
最后更新:2019年04月03日 - 17:32
原始链接:http://qiulyblog.github.io/2019/03/28/[考试总结]test20190328/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。